#include "server_Servidor.h"

#include <algorithm>
#include <iomanip>
#include <iostream>
#include <list>
#include <sstream>

Servidor::Servidor() : encendido(false), fallas(0) { }

Servidor::~Servidor() { }

void Servidor::iniciar(std::list<int> listaPuertos) {
	encendido = true;

	std::list<int>::iterator it;
	for (it = listaPuertos.begin(); it != listaPuertos.end(); it++) {
		ListenerThread* listener = new ListenerThread(this, *it);
		listener->start();

		listaListener.push_back(listener);
	}
}

int Servidor::finalizar() {
	encendido = false;

	std::list<ListenerThread*>::iterator itListener;
	for (itListener = listaListener.begin();
		 itListener != listaListener.end(); itListener++) {
		ListenerThread* listener = *itListener;

		listener->cerrarConexion();
		listener->join();

		delete listener;
	}

	return fallas;
}

bool Servidor::estaEncendido() {
	return encendido;
}

void Servidor::aumentarFallas() {
	fallas++;
}

Logger Servidor::getLogger() {
	return logger;
}
